package com.yami.shop.bean.model;

import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 分账记录表
 * tz_pay_order_division_record
 */
@Data
@TableName("tz_pay_order_division_record")
@Schema(description ="订单支付记录")
public class PayOrderDivisionRecord implements Serializable {
    public static final byte STATE_WAIT = 0; // 待分账
    public static final byte STATE_SUCCESS = 1; // 分账成功（明确成功）
    public static final byte STATE_FAIL = 2; // 分账失败（明确失败）
    public static final byte STATE_ACCEPT = 3; // 分账已受理（上游受理）


    /**
     * 分账记录ID
     */
    @Schema(description = "分账记录ID")
    private Long recordId;

    /**
     * 店铺ID
     */
    @Schema(description = "店铺ID")
    private String shopId;

    /**
     * 系统支付订单号
     */
    @Schema(description = "系统支付订单号")
    private String payNo;

    /**
     * 支付订单渠道支付订单号
     */
    @Schema(description = "支付订单渠道支付订单号")
    private String payOrderChannelOrderNo;

    /**
     * 订单金额
     */
    @Schema(description = "订单金额")
    private Double payOrderAmount;

    /**
     * 订单实际分账金额
     */
    @Schema(description = "订单实际分账金额")
    private Double payOrderDivisionAmount;

    /**
     * 系统分账批次号
     */
    @Schema(description = "系统分账批次号")
    private String batchOrderId;

    /**
     * 上游分账批次号
     */
    @Schema(description = "上游分账批次号")
    private String channelBatchOrderId;

    /**
     * 状态: 0-待分账 1-分账成功（明确成功）, 2-分账失败（明确失败）, 3-分账已受理（上游受理）
     */
    @Schema(description = "分账状态")
    private Byte state;

    /**
     * 上游返回数据包
     */
    @Schema(description = "上游返回数据包")
    private String channelRespResult;

    /**
     * 账号快照》 分账组ID（便于商户接口使用）
     */
    @Schema(description = "分账组ID")
    private Long receiverGroupId;

    /**
     * 账号快照》 分账接收者ID
     */
    @Schema(description = "分账接收者ID")
    private Long receiverId;

    /**
     * 接收者账号别名
     */
    @Schema(description = "分账记录ID")
    private String receiverAlias;

    /**
     * 账号快照》 分账接收账号类型: 0-个人 1-商户
     */
    @Schema(description = "分账接收账号类型")
    private Byte accType;

    /**
     * 账号快照》 分账接收账号
     */
    @Schema(description = "分账接收账号")
    private String accNo;

    /**
     * 账号快照》 分账接收账号名称
     */
    @Schema(description = "分账接收账号名称")
    private String accName;

    /**
     * 账号快照》 分账关系类型（参考微信）， 如： SERVICE_PROVIDER 服务商等
     */
    @Schema(description = "分账关系类型")
    private String relationType;

    /**
     * 账号快照》 当选择自定义时，需要录入该字段。 否则为对应的名称
     */
    @Schema(description = "分账记录ID")
    private String relationTypeName;

    /**
     * 账号快照》 配置的实际分账比例
     */
    @Schema(description = "配置的实际分账比例")
    private BigDecimal divisionProfit;

    /**
     * 计算该接收方的分账金额
     */
    @Schema(description = "计算该接收方的分账金额")
    private Double calDivisionAmount;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private Date createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private Date updateTime;

    private static final long serialVersionUID = 1L;
}